package day_240416;

public class OverloadTest2 {
    public static void main(String[] args) {
        int[] arr1 = new int[]{1,2,3};
        System.out.println(arr1);

        char[] arr2= new char[]{'a','b','c'};
        // 这里打印的并不是地址...
        // 为什么？
        // .println 实际上也是方法的调用
        // 这里其实也是方法的重载，对 char[] 数组有特殊的处理
        // 按住 Ctrl 鼠标移到相应的 println 上，可以看到
        // arr1 和 arr2 数组用的都是 Object 去处理接收到的结果，而对 char[] 数组有特殊的处理
        // 我们看到的 VS JVM看到的 ？“方法名一样罢了”
        System.out.println(arr2);

        // println(int[]) => print(Object(arr1)) 是一样的
        // 这样的结果都是打印出地址？为什么 int[] 类型参数可以被 Object 类型接收处理
        // 其实就是类似于上一个 OverloadTest 里的结果，更大的范围可以包裹小的范围
        // Object 是所有引用数据类型的“根”，即 Object 可以接收所有引用数据类型

        // 如何让这这里和其他俩处一样打印出数组呢？
        // 可以使用强制类型转换
        System.out.println((Object)arr2);

        boolean[] arr3 = new boolean[]{true,false,true};
        System.out.println(arr3);
    }
}
